<?php
class Listas_DiligenciarController extends Zend_Controller_Action {
    private $nav;
    private $infoLista;
    private $titulo_nombre = "Nombre de la sección";
    private $titulo_tabs = array();
    private $codseccionlista;
    private $opcion;
    private $codproceso;

    public function init() {
        
        parent::init();
        $sesionListas = new Zend_Session_Namespace("LISTAS");
        $this->infoLista = $sesionListas->infoLista;
		
        $this->codproceso = $sesionListas->codproceso;
        
        if(empty($this->infoLista)) {
            $this->_helper->redirector("ilegal", "error", "default");
        }
        
//        $Programa = new Solicitudes_Model_DetalleSolicitud();
        $Proceso = new Solicitudes_Model_DetalleSolicitud();
        $this->datosproceso = $Proceso->cargardatosProceso($this->codproceso);
        
        $sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
        if (in_array($sesionSolicitud->tiposolicitud, array(5,6))){
            $solicitudes = new Solicitudes_Model_Solicitudes();
            $datos_solicitud = $solicitudes->cargarDatos($sesionListas->codsolicitud);
            $datos["codinstitucion"] = $datos_solicitud["codinstitucion"];
            $datos["codsolicitud"] = $sesionListas->codsolicitud;
            $criterio = "IES";
            $this->view->datossolicitud = $solicitudes->getSolicitudes($sesionSolicitud->tiposolicitud,$datos,$criterio);
        }else{
		    $this->view->infoPrograma = $Proceso->cargardatosPrograma($this->datosproceso["codprograma"]);
    	    $this->view->infoPrograma["codproceso"] = $this->codproceso;
    	    
    	    $this->view->extensiones = $Proceso->cargardatosPrograma("","",$this->view->infoPrograma["codprograma"]);
    	    
    	    if ($this->view->infoPrograma["extension"]==1){
    	        if (!empty($this->view->infoPrograma["pro_codprograma"])){
    	            $this->view->programaextiende = $Proceso->cargardatosPrograma($this->view->infoPrograma["pro_codprograma"]);
    	        }
    	    }
        }
    	$this->codestado =  $Proceso->getEstadoProceso($this->codproceso);
    	$this->view->codestado =  $this->codestado;
    	$this->view->infoLista = $this->infoLista;

        $this->nav = new App_Util_Navegacion();
        $titulo_secciones="";
        if($this->infoLista["tipolista"] == "C") {
            $this->nav->agregar_navegacion("Listas de solicitudes", "/solicitudes/index/lista");
            $titulo_secciones = "Resumen revisión de completitud";
        } elseif($this->infoLista["tipolista"] == "V") {
            $this->nav->agregar_navegacion("Listas de valoraciones", "/listas/valoraciones/index");
            $titulo_secciones = "Secciones de valoración";
        } elseif($this->infoLista["tipolista"] == "F") {
            $this->nav->agregar_navegacion("Listas de factores", "/listas/factores/index");
            $titulo_secciones = "Factores de la lista";
        } elseif($this->infoLista["tipolista"] == "A") {
            $this->nav->agregar_navegacion("Listas de Información de Autoevaluación", "/listas/infoautoevaluacion/index");
            $titulo_secciones = "Factores de la lista";
        } elseif($this->infoLista["tipolista"] == "P") {
            $this->nav->agregar_navegacion("Listas de Consideraciones Informe de Pares", "/listas/informepares/index");
            $titulo_secciones = "Factores de la lista";
        }
        $this->nav->agregar_navegacion("{$titulo_secciones} :: {$this->infoLista["nombre"]}");
        
        $this->view->nav = $this->nav;
        
        $this->view->placeholder("titulo")->set("Solicitud de acreditación de pregrado");
        
        $this->tabs = new App_Util_Tabs();

        
        $CompletitudService = new Listas_Model_DiligenciarListas();
                
        $datos_diligencia["codlista"]= $this->infoLista["codlista"];
        $datos_diligencia["codproceso"]=$this->codproceso;
        $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
        $opcion = 1;
        $secciones = $CompletitudService->getDiligenciaTramiteLista($datos_diligencia,$opcion);
		
        $this->view->finalizar = true;
        
        foreach ($secciones as $key =>$datosseccion){
            $params=App_Util_SafeUrl::encriptar(array("codseccionlista"=>$datosseccion["codseccionlista"],
                                                      "opcion"=>$key),true);

		    $this->tabs->agregar_vista($datosseccion["nombre"], "/listas/diligenciar/index/{$params}");
		    if ($CompletitudService->verificarCompletitud($datosseccion["codseccionlista"],$datosseccion["codtramitelista"],1))
		        $this->tabs->checkear($datosseccion["nombre"]);
		    else $this->view->finalizar = false;
		    $this->titulo_tabs[]= $datosseccion["nombre"];
        }
		$this->view->tabs = $this->tabs;
		$this->view->titulo_tabs = $this->titulo_tabs;

        $this->codseccionlista = $this->_getParam("codseccionlista");
        $this->codseccionlista = (empty($this->codseccionlista))?$secciones[0]["codseccionlista"]:$this->codseccionlista;
        
        $this->opcion = $this->_getParam("opcion");
        $this->opcion = (empty($this->opcion))?0:$this->opcion;
        $this->view->sintesisseccion  = $secciones[$this->opcion]["textosintesis"];
        
        $this->_readonly = false;
//		if ($this->datosproceso["codestado"] != Solicitudes_Model_Historicoprocesos::COMPLETITUD) {
		if (!in_array($this->datosproceso["codestado"], array(Solicitudes_Model_Historicoprocesos::COMPLETITUD, Solicitudes_Model_Historicoprocesos::COMPLETITUD_AUTOEVALUACION))) {
			$this->_readonly = true;
			$this->_helper->layout()->setLayout("popup");
		}
        
    }

    public function indexAction() {
        $this->view->opcion = $this->_getParam("opcion", 0);
        $this->view->opcion = (empty($this->view->opcion))?0:$this->view->opcion;
        
        $this->tabs->actual($this->titulo_tabs[$this->view->opcion]);
        
        $CompletitudService = new Listas_Model_DiligenciarListas();
                
        $datos_diligencia["codlista"]= $this->infoLista["codlista"];
        $datos_diligencia["codproceso"]=$this->codproceso;
        $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
        $datos_diligencia["codseccionlista"]=$this->codseccionlista;
        
        $opcion = 2;
        $elementosSeccion = $CompletitudService->getDiligenciaTramiteLista($datos_diligencia,$opcion);
        
        $escalasService = new Listas_Model_Escalas();
        $escala = $escalasService->getEscalasDiligencia($this->infoLista["codlista"]);
        
        $datos_form = $CompletitudService->CargarDatosForm($elementosSeccion,"COMPLETITUD");
        $datos_form["opcion"]= $this->view->opcion;
        $datos_form["codseccionlista"]= $this->codseccionlista;
        
        $form = new Listas_Form_Diligenciar(array("elementosSeccion"=>$elementosSeccion,"gradosEscala"=>$escala));
		$form->populate($datos_form);
        $form->makeStatic($this->_readonly);
        $form->recoverFromRedirect();
        
    	        
        $this->view->datos = $elementosSeccion;
        $this->view->form = $form;
        
        if ($this->view->finalizar && !$this->_readonly){
            $form2 = new Listas_Form_Finalizarcompletitud();
            
            if ($this->datosproceso["codestado"]==Solicitudes_Model_Historicoprocesos::COMPLETITUD){
	            $array_completitud = array(Solicitudes_Model_Historicoprocesos::CONDICIONES_INICIALES=>"Condiciones iniciales",
		                                   Solicitudes_Model_Historicoprocesos::DESIGNACION_CONSEJEROS=>"Visita de consejeros",
		                                   Solicitudes_Model_Historicoprocesos::APROBADO_AUTOEVALUACION=>"Aprobado para iniciar autoevaluación");
	            
	            $form2->getElement("codestado")->addMultiOptions($array_completitud);
	            $form2->getElement("codestado")->setValue(Solicitudes_Model_Historicoprocesos::APROBADO_AUTOEVALUACION);
            }else{
	   			$array_completitud = array(Solicitudes_Model_Historicoprocesos::EN_AUTOEVALUACION=>"Regresar a Autoevaluación",
	                                   Solicitudes_Model_Historicoprocesos::EN_PRESELECCION_PARES=>"En preselección Pares (Evaluación Externa)");
	            
	            $form2->getElement("codestado")->addMultiOptions($array_completitud);
	            $form2->getElement("codestado")->setValue(Solicitudes_Model_Historicoprocesos::EN_PRESELECCION_PARES);
            }
            $this->view->form2 = $form2;
        }
        
    }

	public function guardarcompletitudAction() {
	                  
	    $CompletitudService = new Listas_Model_DiligenciarListas();
                
        $datos_diligencia["codlista"]= $this->infoLista["codlista"];
        $datos_diligencia["codproceso"]=$this->codproceso;
        $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
        $datos_diligencia["codseccionlista"]=$this->codseccionlista;
        
        $opcion = 2;
        $elementosSeccion = $CompletitudService->getDiligenciaTramiteLista($datos_diligencia,$opcion);
	        
	    $escalasService = new Listas_Model_Escalas();
        $escala = $escalasService->getEscalasDiligencia($this->infoLista["codlista"]);
        
        $form = new Listas_Form_Diligenciar(array("elementosSeccion"=>$elementosSeccion,"gradosEscala"=>$escala));
		    
	    if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $datos = $this->getRequest()->getPost();
                unset($datos["opcion"]);
                unset($datos["codseccionlista"]);
                
                foreach($datos as $key =>$value){
                    list($campo,$codigo) = explode("_",$key);
                    $datos_insert[$campo] = $value;
                    if ($campo=="justificacionvaloracion"){
                        $datos_insert["codtramiteelemento"] = $codigo;
                        $datos_insert["codusuario"] = App_User::getCodigoUsuario();
                        $CompletitudService->guardarTramiteElemento($datos_insert);
                    }
                }
                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        }else{
            $form->setStateRedirect();
        }
		$parametros["opcion"]=$this->_getParam("opcion");
		$parametros["codseccionlista"]=$this->_getParam("codseccionlista");
		$this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
    
	
   public function finalizarcompletitudAction() {
        try {
            $sesionLista = new Zend_Session_Namespace("LISTAS");
            $Solicitudes= new Solicitudes_Model_Solicitudes();
            $Solicitudes->finalizarCompletitud($sesionLista->codsolicitud,$this->_getParam("codestado"));
            $this->view->priorityMessenger("La solicitud finalizó el proceso de completitud correctamente", "success");
        } catch(Exception $e) {
            echo $this->view->priorityMessenger($e->getMessage(), "error");
        }
        $this->_helper->redirector("index","solicitudes");
    }
}//fin de la clase

